#pragma once
#include "CDependencyObject.h"

class CDefinitionBase :
	public CDependencyObject
{

protected: 
	CDefinitionBase();
	XFLOAT GetUserSizeValue();
	enum GridUnitType GetUserSizeType();
	XFLOAT GetUserMaxSize();
	XFLOAT GetUserMinSize();
	XFLOAT GetMinSize();
	void UpdateMinSize(XFLOAT newMinSize);
	void SetMinSize(XFLOAT newMinSize);
	XFLOAT GetMeasureArrangeSize();
	void SetMeasureArrangeSize(XFLOAT measureSize);
	XUINT8 GetLayoutTimeSize();
	void SetLayoutTimeSize(XUINT8 sizeType);
	XFLOAT GetSizeCache();
	void SetSizeCache(XFLOAT value);
	XFLOAT GetFinalOffset();
	void SetFinalOffset(XFLOAT value);
	XFLOAT GetPreferredSize();
	static HRESULT ActualSize(struct Xcp_IDependencyObject * pObject, XUINT32 cArgs, CValue * pArgs, CValue * pResult);
	struct XGRIDLENGTH m_pUserSize;
	XFLOAT m_eUserMinSize;
	XFLOAT m_eUserMaxSize;
private: 
	HRESULT GetActualSize(XFLOAT * peWidth);
	XFLOAT m_eFinalOffset;
	XFLOAT m_eMeasureArrangeSize;
	XUINT8 m_layoutTimeSize;
	XFLOAT m_eMinSize;
	XFLOAT m_eSizeCache;

};